#pragma once
#include <xmmintrin.h>

__forceinline __m128 operator+(__m128 l, __m128 r) { return _mm_add_ps(l,r); };
__forceinline __m128 operator-(__m128 l, __m128 r) { return _mm_sub_ps(l,r); };
__forceinline __m128 operator*(__m128 l, __m128 r) { return _mm_mul_ps(l,r); };
__forceinline __m128 operator/(__m128 l, __m128 r) { return _mm_div_ps(l,r); };

__forceinline __m128 operator+(__m128 l, float f) { return _mm_add_ps(l,_mm_set1_ps(f)); };
__forceinline __m128 operator-(__m128 l, float f) { return _mm_sub_ps(l,_mm_set1_ps(f)); };
__forceinline __m128 operator*(__m128 l, float f) { return _mm_mul_ps(l,_mm_set1_ps(f)); };
__forceinline __m128 operator/(__m128 l, float f) { return _mm_div_ps(l,_mm_set1_ps(f)); };

__forceinline __m128 operator&(__m128 l, __m128 r) { return _mm_and_ps(l,r); };
__forceinline __m128 operator|(__m128 l, __m128 r) { return _mm_or_ps(l,r); };

__forceinline __m128 operator<(__m128 l, __m128 r) { return _mm_cmplt_ps(l,r); };
__forceinline __m128 operator>(__m128 l, __m128 r) { return _mm_cmpgt_ps(l,r); };
__forceinline __m128 operator<=(__m128 l, __m128 r) { return _mm_cmple_ps(l,r); };
__forceinline __m128 operator>=(__m128 l, __m128 r) { return _mm_cmpge_ps(l,r); };
__forceinline __m128 operator!=(__m128 l, __m128 r) { return _mm_cmpneq_ps(l,r); };
__forceinline __m128 operator==(__m128 l, __m128 r) { return _mm_cmpeq_ps(l,r); };